#include "stdio.h"

void q_sort(int numbers[], int left, int right)
{
	int pivot, l_hold, r_hold;

	l_hold = left;
	r_hold = right;
	pivot = numbers[left];
	
	while(left < right)
	{
		while( numbers[right] >= pivot && left < right )
			right--;

		if( left != right )
		{
			numbers[left] = numbers[right];
			left++;
		}
		
		while( numbers[left] <= pivot && left < right )
			left++;
		if( left != right )
		{
			numbers[right] = numbers[left];
			right--;
		}
	}
	numbers[left] = pivot;
	pivot = left;
	left = l_hold;
	right = r_hold;
	if( left < pivot )
		q_sort(numbers, left, pivot-1);
	if( right > pivot )
		q_sort(numbers, pivot+1, right);
}

void quicksort(int numbers[], int size)
{
	q_sort(numbers, 0, size-1);
}

int main() {
	
	int a[] = {9, 8, 7, 6, 5, 4, 3, 2, 1};

	quicksort(a, 9);

	int i;
	for(i=0; i<9; i++)
		printf("%d ", a[i]);

	printf("\n");
	return 0;

}
